diff options
Diffstat (limited to 'app/[lng]/evcp/(evcp)/evaluation-target-list/page.tsx')
| -rw-r--r-- | app/[lng]/evcp/(evcp)/evaluation-target-list/page.tsx | 80 |
1 files changed, 23 insertions, 57 deletions
diff --git a/app/[lng]/evcp/(evcp)/evaluation-target-list/page.tsx b/app/[lng]/evcp/(evcp)/evaluation-target-list/page.tsx index a0523eea..886d061d 100644 --- a/app/[lng]/evcp/(evcp)/evaluation-target-list/page.tsx +++ b/app/[lng]/evcp/(evcp)/evaluation-target-list/page.tsx @@ -1,22 +1,15 @@ import * as React from "react" import { Metadata } from "next" import { type SearchParams } from "@/types/table" -import { getValidFilters } from "@/lib/data-table" import { Shell } from "@/components/shell" import { DataTableSkeleton } from "@/components/data-table/data-table-skeleton" -import { HelpCircle } from "lucide-react" -import { - Popover, - PopoverContent, - PopoverTrigger, -} from "@/components/ui/popover" -import { Button } from "@/components/ui/button" import { Badge } from "@/components/ui/badge" import { getDefaultEvaluationYear, searchParamsEvaluationTargetsCache } from "@/lib/evaluation-target-list/validation" import { getEvaluationTargets } from "@/lib/evaluation-target-list/service" -import { EvaluationTargetsTable } from "@/lib/evaluation-target-list/table/evaluation-target-table" import { InformationButton } from "@/components/information/information-button" +import { EvaluationTargetsTable } from "@/lib/evaluation-target-list/table/evaluation-target-table" + export const metadata: Metadata = { title: "협력업체 평가 대상 관리", description: "협력업체 평가 대상을 확정하고 담당자를 지정합니다.", @@ -26,63 +19,38 @@ interface EvaluationTargetsPageProps { searchParams: Promise<SearchParams> } - - export default async function EvaluationTargetsPage(props: EvaluationTargetsPageProps) { const searchParams = await props.searchParams + + // ✅ 간소화된 파싱 const search = searchParamsEvaluationTargetsCache.parse(searchParams) - const validFilters = getValidFilters(search.filters) - - // 기본 필터 처리 (통일된 이름 사용) - let basicFilters = [] - if (search.basicFilters && search.basicFilters.length > 0) { - basicFilters = search.basicFilters - console.log("Using search.basicFilters:", basicFilters); - } else { - console.log("No basic filters found"); - } - - // 모든 필터를 합쳐서 처리 - const allFilters = [...validFilters, ...basicFilters] - - // 조인 연산자도 통일된 이름 사용 - const joinOperator = search.basicJoinOperator || search.joinOperator || 'and'; - - // 현재 평가년도 (필터에서 가져오거나 기본값 사용) + + // 현재 평가년도 const currentEvaluationYear = search.evaluationYear || getDefaultEvaluationYear() - - // Promise.all로 감싸서 전달 + + // ✅ 단순화된 서비스 호출 (필터 처리는 테이블에서 담당) const promises = Promise.all([ - getEvaluationTargets({ - ...search, - filters: allFilters, - joinOperator, - }) + getEvaluationTargets(search) ]) return ( <Shell className="gap-4"> - {/* 간소화된 헤더 */} + {/* Header */} <div className="flex items-center justify-between space-y-2"> - <div className="flex items-center justify-between space-y-2"> - <div className="flex items-center gap-2"> - <div className="flex items-center gap-2"> - <h2 className="text-2xl font-bold tracking-tight"> - 협력업체 평가 대상 관리 - </h2> - <InformationButton pagePath="evcp/evaluation-target-list" /> - </div> - <Badge variant="outline" className="text-sm"> - {currentEvaluationYear}년도 - </Badge> - - </div> + <div className="flex items-center gap-2"> + <h2 className="text-2xl font-bold tracking-tight"> + 협력업체 평가 대상 관리 + </h2> + <InformationButton pagePath="evcp/evaluation-target-list" /> + <Badge variant="outline" className="text-sm"> + {currentEvaluationYear}년도 + </Badge> </div> </div> - - {/* 메인 테이블 (통계는 테이블 내부로 이동) */} + + {/* Main Table */} <React.Suspense - key={JSON.stringify(searchParams)} // URL 파라미터가 변경될 때마다 강제 리렌더링 + key={`evaluation-targets-${search.page}-${JSON.stringify(search.filters)}-${search.joinOperator}-${search.search || 'no-search'}`} fallback={ <DataTableSkeleton columnCount={12} @@ -106,12 +74,10 @@ export default async function EvaluationTargetsPage(props: EvaluationTargetsPage /> } > - {currentEvaluationYear && - <EvaluationTargetsTable - promises={promises} + <EvaluationTargetsTable + promises={promises} evaluationYear={currentEvaluationYear} /> -} </React.Suspense> </Shell> ) |
